1. Field of the Invention
The invention relates to an encoding device and a decoding device, and more particularly, to an encoding device and a decoding device for use in a high-density recording system or a high-density data transmission system.
2. Description of the Prior Art
When data is transmitted through a transmission line or recorded onto a recording medium such as a magnetic disc, an optical disc, or a magneto-optic disc, the data is first encoded into a code appropriate for the transmission line or the recording medium. As Kahlman, et al. describe in U.S. Pat. No. 4,477,222 and U.S. Pat. No. 6,496,541, a well known encoding technique is variant of block encoding expressed as Run Length Limited (RLL) (d, k; m, n; r). In RLL (d, k; m, n; r), m-bit source words are blocked into units each comprising m*i bits. Each unit is converted into a code word having a total code length of n*i bits, and as RLL is a variable length code, i is an integer of at least 1 ranging to a maximum value of r.
Because of the non-zero switching times of bit transitions, to prevent ambiguity at the receiver between successively received “1”s that could cause a “0” between the “1”s to be misinterpreted as a “1”, the parameter d is used to specify the minimum number of “0”s that must appear between two consecutive “1”s. d is referred to as a minimum run of zeros. Additionally, to prevent long runs of “0”s, which would prevent the receiver from doing timing recovery, the parameter k is used to specify the maximum number of “0”s appearing between two consecutive “1”s. k is referred to as a maximum run of zeros.
Many transmission lines and recording media are not suitable for transmitting or storing an absolute value such as a “0” or a “1” but are well adapted for bit transitions, in other words the act of switching from a “0” to a “1” or vice versa. To accommodate this restriction, the variable length code undergoes an NRZI (Non Return to Zero Inverted) conversion where each “1” of the variable length code is interpreted as a bit inversion while each “0” of the variable length code is interpreted as a non-inversion. The NRZI modulated variable length code is referred to as a recording wave train.
Let notations Tmin and Tmax denote the minimum and maximum inversion periods of a recording wave train respectively. In order to record the recording wave train at a high recording density, a long minimum inversion period Tmin is preferred, equating to a large minimum run of zeros d. Additionally, from the clock recovery point of view, it is desirable to have a short maximum inversion period Tmax, equating to a small maximum run of zeros k. In order to satisfy these requirements, a variety of encoding techniques have been developed.
FIG. 1 shows a typical conversion table 10 for the variable length RLL (1,7) code. A common encoding technique for optical discs,magnetic discs, or magneto-optic discs is the variable length code RLL (1,7), which can also be expressed as (1, 7; 2, 3; 2). Please note, in FIG. 1, the lower case “x” used in the conversion table 10 has the value “1” if the next successive channel bit is a “0” or has the value “0” if the next successive channel bit is a “1”.
The minimum inversion period Tmin, which can be expressed as (d+1)T, for FIG. 1 is thus equal to 2T, where T is a bit gap in the recording wave train. The fact that a lot of bit edges are generated at short intervals is helpful for the generation of a clock signal in the receiver. However, as the recording line density is further increased, this minimum run of zeros d adversely affects overall performance. For example, if minimum inversion periods 2T are generated consecutively, the closely spaced waveform in the recording wave train is especially prone to distortion generated by disturbances such as noise. Furthermore, because the dominate error event encountered while reading back data stored in a high density recording system is a 2T interval being misread as a 1T interval, a single error can effectively cause a shift of the front edge of a block of received codewords resulting in a run of bit errors for the entire repeated consecutive minimum runs of zeros d.
In U.S. Pat. No. 6,496,541, Kahlman et al. describe an RLL(1,7) encoder/decoder that limits the repeated minimum transition runs to a value of six, also expressed as RMTR=6. The RMTR constraint limits the number of consecutive appearances of minimum runs d to a maximum value of six.
FIG. 2 shows a finite state transition diagram 20 for the bit stream of an RLL(1,7) RMTR=6 constrained system according to the prior art. All compliant bit transitions are indicated on this diagram. As an example of a noncompliant bit stream, suppose the current state is at node A. Node A indicates the immediately preceding bits received were “ . . . 10101010101010” as the only way to reach node A is to pass through this sequence of bits. Node A has only a single path going to node B when a “0” is received. This is because a “0” must be received. If an additional “1” were received, this would mean that the immediately preceding bits were “ . . . 101010101010101”, which violates the RMTR=6 constraint. Similarly, due to the maximum run of zeros being specified as k=7, node C has only a single path going to node D when a “1” is received. If an additional “0” were received at node C, this would mean that eight zeros were been received in a row, violating the k=7 constraint.
Although an RMTR constrained system such as that shown in FIG. 2 reduces the resulting run of bit errors for a consecutive run of minimum runs d caused by a 2T interval being misread as a 1T interval, the bit errors that do occur are often uncorrectable. For example if a “1” is received at node A, although the system can detect this as an error, the correct bit stream is not obvious.
An additional problem with the typical RLL(1,7) encoder/decoders according to the prior art is a maximum run k being misinterpreted as a SYNC signal. Generally speaking, data systems employ consecutive long run length patterns as the SYNC pattern. For example, a typical SYNC pattern is defined as consecutive 9T internals. In an RLL(1,7) based system, the maximum inversion internal is 8T. A timing error (or another error) could occur causing the receiver to misread an 8T interval as a 9T interval. If consecutive errors of this nature occur, a SYNC pattern could be mistakenly received.